package com.example.socketdemo.buffer.file;

import java.io.*;
import java.net.Socket;
import java.util.UUID;

/**
 * socket 线程
 */
public class SocketThread extends Thread{

    private Socket socket;

    public SocketThread(Socket socket){
        this.socket = socket;
    }

    @Override
    public void run(){
        try {
            // 1. 把字节输入流包装成自己需要的流进行数据的读取。
            DataInputStream dis = new DataInputStream(socket.getInputStream());
            // 2、读取客户端发送过来的文件类型
            String suffix = dis.readUTF();
            System.out.println("服务端已经成功接收到了文件类型：" + suffix);
            // 定义一个字节输出管道负责把客户端发来的文件数据写出去
            OutputStream os = new FileOutputStream("D:\\test\\" + UUID.randomUUID().toString()+suffix);

            byte[] buffer = new byte[1024];
            int len;

            while((len = dis.read(buffer)) > 0){
                os.write(buffer, 0, len);
            }

            os.close();
            System.out.println("服务端接收文件保存成功！");

        } catch (IOException e) {
            e.printStackTrace();
        }
    }

}
